<?php




if($_REQUEST){
    $updatas = json_encode($_REQUEST);
//自己的业务代码


//根据运营商代码返回对应的错误值
    if($_REQUEST['supplier']){

        if($_REQUEST['supplier']=='中国移动'){
            $ptm ='zt';
        }elseif($_REQUEST['supplier']=='中国联通'){
            $ptm ='zl';
        }elseif($_REQUEST['supplier']=='中国电信'){
            $ptm ='zl';
        }else{
            $relft = array('ret_code'=>'0','redirect'=>"非法运营商.",'data'=>array('time'=>time()));
            exit(json_encode($relft));
        }
        //$res值为对应的业务错误码中文说明
        $res =  $this->getGateWayErrMsg($ptm,$_REQUEST['ReportResultInfo']);
    }
}


//记LOG的例子,主要是为了$up_msg编码的处理
//请保存该文件的时候 编码方式:utf-8
$old_log = '';
if(file_exists("php-utf8-debug.log")){
    $old_log = file_get_contents("php-utf8-debug.log");
}
$new_log = $old_log.$updatas;
$log2 = file_put_contents("php-utf8-debug.log",$new_log);
echo 'ok';
//数据解析规则
/*$updatas 对应的json数据如下：
{
    "spid": "27649", //spid是企业ID号
    "taskname": "20170723043340_A3QAC1J0_7632",//提交任务ID号，默认规则是（时间戳_随机码_用户uid），如果使用SDK包开发不传uidcode值默认规则是（时间戳_随机码）
    "typeid": "2",//业务类型
    "content": "【奥道网络】您的订单已经生成，感谢支持",//发送的短信内容
    "moblie": "18857165066",//接收手机号
    "SendedTime": "2017-07-23 16:34:08",//提交网关时间
    "ReportResultInfo": "DELIVRD",//回执状态（DELIVRD或0代表到达为结算标志，其他状态为退量标志）
    "ReportTime": "2017-07-23 16:34:19",//回执生成时间
    "words": "19",//短信有效字数 （参考值，以运营商统计为准）
    "use_num": "1",//预扣使用量条数，如果ReportResultInfo值不为DELIVRD或0，该预扣值在24小时后退回
    "province": "",//行政省数据（参考值）
    "city": "杭州",//行政市市数据（参考值）
    "areacode": "0571",//行政区号（参考值）
    "supplier": "中国移动"//运营商所属（参考值）
}*/








/**
 * 根据运营商错误编号获取错误信息
 * @param $code 错误编号
 * @param $ptm 运营商代码 array('zt'=>'中国移动','zl'=>'中国联通','zd'=>'中国电信')
 */
 function getGateWayErrMsg($ptm,$code=''){

    if(!$ptm){
        $relft = array('ret_code'=>'0','redirect'=>"运营商代码未传值.",'data'=>array('err_code'=>'10002','time'=>time()));
        exit(json_encode($relft));
    }else{

        $ztcodes =array(
            'CB:0001'=>'非神州行预付费用户/用户已销号',
            'CB:0005'=>'PPS用户状态异常（包括未头次使用、储值卡被封锁、储值卡进入保留期、储值卡挂失）',
            'CB:0007'=>'用户余额不足',
            'CA:0054'=>'发送消息失败/超时未接收到响应消息',
            'CB:0002'=>'数据库操作失败',
            'CB:0053'=>'梦网用户不存在',
            'DELIVRD'=>'消息发送成功',
            'EXPIRED'=>'用户关机/不在服务区',
            'REJECTD'=>'消息接收拒绝',
            'UNDELIV'=>'用户状态不正确',
            'MM:0064'=>'运营商屏蔽（超量）',
            'MM:0000'=>'运营商屏蔽（地理位置）',
            'MB:0066'=>'超过最大发送次数/无效的定时时间',
            'MK:0015'=>'可能是手机满了。',
            'MK:0000'=>'移动内部错误',
            'MK:0001'=>'目标号码是空号',
            'MK:0008'=>'移动内部错误',
            'MK:0009'=>'移动内部错误',
            'MK:0011'=>'移动内部错误',
            'MK:0013'=>'目标号码是停机',
            'MK:0022'=>'移动内部错误',
            'MK:0029'=>'移动内部错误',
            'MK:0036'=>'移动内部错误',
            'MK:0053'=>'移动内部错误',
            'MK:0057'=>'移动内部错误',
            'MK:0255'=>'移动内部错误',
            'DA:0054'=>'TCP阻塞/超时未接收到响应消息',
            'DB:0100'=>'手机号码不存在',
            'DB:0101'=>'手机号码错误',
            'DB:0102'=>'用户停机',
            'DB:0103'=>'用户欠费',
            'DB:0104'=>'无该业务的权限',
            'DB:0105'=>'业务代码错误',
            'DB:0106'=>'服务代码错误',
            'DB:0107'=>'业务不存在',
            'DB:0108'=>'SP欠费',
            'DB:0109'=>'该服务种类不存在',
            'DB:0110'=>'该服务种类尚未开通',
            'DB:0111'=>'该业务尚未开通',
            'DB:0112'=>'SP代码错误',
            'DB:0113'=>'SP不存在',
            'DB:0114'=>'SP暂停服务',
            'DB:0115'=>'用户没有定购该业务',
            'DB:0116'=>'用户暂停定购该业务',
            'DB:0117'=>'该业务不能对该用户开放',
            'DB:0118'=>'用户已经订购了该业务',
            'DB:0119'=>'用户不能取消该业务',
            'DB:0120'=>'话单格式错误',
            'DB:0121'=>'没有该类业务',
            'DB:0122'=>'接收异常',
            'DB:0123'=>'业务价格为负',
            'DB:0124'=>'业务价格格式错误',
            'DB:0125'=>'业务价格超出范围',
            'DB:0126'=>'该用户不是神州行用户',
            'DB:0127'=>'该用户没有足够的余额',
            'DB:0128'=>'补款,冲正失败',
            'DB:0129'=>'用户已经是梦网用户',
            'DB:0130'=>'用户在BOSS中没有相关用户数据',
            'DB:0131'=>'BOSS系统数据同步出错',
            'DB:0132'=>'相关信息不存在',
            'DB:0133'=>'用户数据同步出错',
            'DB:0134'=>'SP数据同步出错',
            'DB:0135'=>'业务数据同步出错',
            'DB:0136'=>'用户密码错误',
            'DB:0137'=>'伪码信息错误',
            'DB:0138'=>'用户相关信息不存在',
            'DB:0139'=>'用户是黑名单用户',
            'DB:0140'=>'用户未点播该业务',
            'DB:0141'=>'退订用户',
            'DB:0144'=>'上海移动黑名单',
            'DB:0142'=>'短信包月第三方超过下行上限',
            'DB:0182'=>'用户梦网业务关闭',
            'DB:9001'=>'网络异常',
            'DB:9007'=>'业务网关超过限制的流量/',
            'MB:0008'=>'用户包月费用超过最大限额',
            'MA:0051'=>'尚未建立连接',
            'MA:0054'=>'超时未接收到响应消息',
            'MA:0191'=>'SMSC厂家自定义的错误码',
            'MB:0019'=>'移动内部错误',
            'MB:0020'=>'无效的SYSTEMID',
            'MB:0065'=>'目的地址错误',
            'MB:0070'=>'移动内部错误',
            'MB:0077'=>'移动内部错误',
            'MB:0088'=>'移动内部错误',
            'MB:0145'=>'SMSC厂家自定义的错误码',
            'MB:0147'=>'SMSC厂家自定义的错误码',
            'MB:0192'=>'SMSC厂家自定义的错误码',
            'MB:0193'=>'SMSC厂家自定义的错误码',
            'MB:0241'=>'SMSC厂家自定义的错误码',
            'MB:0244'=>'SMSC厂家自定义的错误码',
            'MB:0250'=>'SMSC厂家自定义的错误码',
            'MB:4024'=>'移动内部错误',
            'MB:4025'=>'移动内部错误',
            'MC:0015'=>'移动内部错误',
            'MC:0021'=>'移动内部错误',
            'MC:0055'=>'移动内部错误',
            'MC:0151'=>'移动内部错误',
            'MC:0199'=>'移动内部错误',
            'CA:0051'=>'尚未建立连接',
            'CA:0052'=>'尚未成功登录',
            'CA:0111'=>'SCP厂家自定义的错误码',
            'CB:0016'=>'参数错误',
            'CB:0018'=>'重复发送消息序列号msgid相同的计费请求消息',
            'CB:0022'=>'SCP互联失败',
            'CB:0047'=>'过期用户或者用户不支持梦网业务/移动内部错误',
            'IB:0008'=>'流量控制错',
            'IB:0009'=>'前转判断错误',
            'IB:0070'=>'网络断连或者目的设备关闭端口',
            'IB:0100'=>'移动内部错误',
            'IB:0113'=>'移动内部错误',
            'IB:0255'=>'移动内部错误',
            'IC:0154'=>'移动内部错误',
        );
        $zlcodes =array(
            '0'=>'发送成功',
            '1'=>'非法登录',
            '2'=>'重复登录',
            '3'=>'连接过多',
            '4'=>'登录类型错',
            '5'=>'参数格式错',
            '6'=>'非法手机号码',
            '7'=>'消息ID错',
            '8'=>'信息长度错',
            '9'=>'非法序列号',
            '10'=>'非法操作GNS(黑名单用户) ',
            '11'=>'节点忙',
            '12'=>'停机或者空号',
            '13'=>'停机',
            '15'=>'投诉超限',
            '21'=>'目的地址不可达',
            '22'=>'路由错',
            '23'=>'路由不存在',
            '24'=>'计费号码无效',
            '25'=>'用户不能通信',
            '26'=>'手机内存不足',
            '27'=>'手机不支持短消息',
            '28'=>'手机接收短消息出现错误',
            '29'=>'不知道的用户',
            '30'=>'不提供此功能',
            '31'=>'非法设备',
            '32'=>'系统失败',
            '33'=>'短信中心队列满',
            '34'=>'智能网平台扣费失败',
            '51'=>'尚未建立连接',
            '52'=>'尚未成功登录',
            '53'=>'发送消息失败',
            '54'=>'超时未接收到响应消息',
            '55'=>'超时(黑名单号码)',
            '56'=>'用户状态不正常（不在白名单）',
            '60'=>'保留',
            '61'=>'用户有效时间已经过期',
            '62'=>'定时发送时间已经过期',
            '63'=>'不能识别的FeeType',
            '64'=>'发送服务源地址鉴权失败',
            '65'=>'发送服务目的地址鉴权失败',
            '66'=>'手机内存满或关机等待下发已经到达10条后',
            '67'=>'黑名单用户',
            '68'=>'用户鉴权失败',
            '69'=>'此用户为黑名单用户',
            '70'=>'网络断连或目的设备关闭接口',
            '71'=>'超过最大节点数',
            '72'=>'找不到路由',
            '73'=>'等待应答超时',
            '74'=>'送SCP失败',
            '75'=>'送SCP鉴权等待应答超时',
            '76'=>'信息安全鉴权失败',
            '77'=>'超过最大Submit提交数',
            '78'=>'SPID为空',
            '79'=>'业务类型为空',
            '80'=>'CPCode错误',
            '81'=>'发送接收接口重复',
            '82'=>'循环路由',
            '83'=>'超过接收侧短消息MTU',
            '84'=>'送DSMP重发失败',
            '85'=>'DSMP系统忙重发',
            '86'=>'DSMP系统忙，且缓存满重发',
            '87'=>'DSMP流控重发',
            '88'=>'流控错误，流量超过最大限制',
            '89'=>'联通内部错误',
            '90'=>'SGIP消息等待处理',
            '91'=>'SGIP协议状态报告请求标识错误',
            '92'=>'SGIP协议MT标识错',
            '93'=>'SGIP协议SP节点编号错',
            '94'=>'没有配置帐号',
            '100'=>'鉴权成功',
            '101'=>'SPNumber与SP企业代码匹配错',
            '102'=>'SPNumber未分配或不合法',
            '103'=>'业务代码未分配',
            '104'=>'业务资费类型填错',
            '105'=>'业务信息费率填写错误',
            '106'=>'用户未订制的SP非法下发',
            '107'=>'LinkID不匹配（MT与MO）',
            '108'=>'停机用户鉴权不通过，无法下发',
            '109'=>'计费号码无效',
            '110'=>'黑名单用户',
            '111'=>'MT消息SPMS鉴权超时',
            '112'=>'包月话单SPMS鉴权超时/下发的MT超过最大条数',
            '113'=>'该包格式错误/下发MT超过允许携带信息费的MT消息上限',
            '114'=>'USERCOUNT字段不为1',
            '115'=>'SP不能将MOFLAG填为3',
            '116'=>'将发NOTIUSER包，原流程需要终止',
            '117'=>'WEB点播命令字不存在',
            '118'=>'包月话单被拦截',
            '119'=>'重复包月话单',
            '120'=>'订购业务失败',
            '121'=>'退订业务失败',
            '123'=>'重复订购',
            '124'=>'重复点播',
            '182'=>'日发送量超过限制',
            '202'=>'广西联通黑名单',
            '209'=>'广东联通网关超速',
        );
        $zdcodes =array(
            '0'=>'成功',
            '1'=>'系统忙',
            '2'=>'超过最大连接数',
            '10'=>'消息结构错',
            '11'=>'命令字错',
            '12'=>'序列号重复',
            '20'=>'IP地址错',
            '21'=>'认证错',
            '22'=>'版本太高',
            '30'=>'非法消息类型（MsgType）',
            '31'=>'非法优先级（Priority）',
            '32'=>'非法资费类型（FeeType）',
            '33'=>'非法资费代码（FeeCode）',
            '34'=>'非法短消息格式（MsgFormat）',
            '35'=>'非法时间格式',
            '36'=>'非法短消息长度（MsgLength）',
            '37'=>'有效期已过',
            '38'=>'非法查询类别（QueryType）',
            '39'=>'路由错误',
            '40'=>'非法包月费/封顶费（FixedFee）',
            '41'=>'非法更新类型（UpdateType）',
            '42'=>'非法路由编号（RouteId）',
            '43'=>'非法服务代码（ServiceId）',
            '44'=>'非法有效期（ValidTime）',
            '45'=>'非法定时发送时间（AtTime）',
            '46'=>'非法发送用户号码（SrcTermId）',
            '47'=>'非法接收用户号码（DestTermId）',
            '48'=>'非法计费用户号码（ChargeTermId）',
            '49'=>'非法CP代码',
            '50'=>'非预付费用户',
            '51'=>'余额不足',
            '52'=>'非注册用户',
            '53'=>'非注册CP',
            '54'=>'账号不可用',
            '55'=>'扣费失败',
            '255'=>'未知错误',
        );

        if($ptm='zt'){
            $errmsg = isset($ztcodes[$code])?$ztcodes[$code]:"未知错误-".$code;

        }elseif($ptm='zl'){
            $errmsg = isset($zlcodes[$code])?$zlcodes[$code]:"未知错误-".$code;

        }elseif($ptm='zd'){
            $errmsg = isset($zdcodes[$code])?$zdcodes[$code]:"未知错误-".$code;

        }else{
            $relft = array('ret_code'=>'0','redirect'=>"非法运营商.",'data'=>array('err_code'=>'10003','time'=>time()));
            exit(json_encode($relft));
        }
    }
    return $errmsg;
}


?>